package com.hsc.offer;

/**
 * @author
 * @date 2025-06-18
 * @Description 12.给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
 */
public class OfferTest7 {
    public static void main(String[] args) {
        System.out.println("new OfferTest7().Power(1.5,2) = " + new OfferTest7().Power(1.5, 2));
    }

    /**
     * 在线刷题的方法 直接调用api
     *
     * @param base
     * @param exponent
     * @return
     */
    public double Power(double base, int exponent) {
        return Math.pow(base, exponent);
    }

    /**
     * 面试时的代码
     *
     * @param base
     * @param exponent
     * @return
     */
    public double Power1(double base, int exponent) {
        // 如果次方为0 任何数的0次方都为 1
        if (exponent == 0) {
            return 1;
        }

        // 如果大于 1次方法
        int sum = 1;
        //  Math.abs(exponent) 先获取绝对值  有可能传入的负数
        for (int i = 1; i <= Math.abs(exponent); i++) {
            // 多少次方就是乘以自己本身多少次
            sum = sum * exponent;
        }
        // 处理正数次方 和负数次数的情况
        // 负数的次方 就是 正数次方的倒数
        return exponent > 0 ? sum : 1 / sum;
    }


}
